package ui;

import entity.User;
import manager.UserManager;
import manager.LogManager;
import ui.AdminUI;

import java.util.Scanner;

public class LoginUI {
    private Scanner scanner = new Scanner(System.in);
    private UserManager userManager = new UserManager();

    public void start() {
        while (true) {
            System.out.println("\n===== 影院管理系统 =====");
            System.out.println("1. 管理员登录");
            System.out.println("2. 经理登录（功能开发中）");
            System.out.println("3. 前台登录（功能开发中）");
            System.out.println("4. 退出系统");
            System.out.print("请选择：");

            int choice;
            try {
                choice = Integer.parseInt(scanner.nextLine());
            } catch (NumberFormatException e) {
                System.out.println("输入错误，请输入数字");
                continue;
            }

            switch (choice) {
                case 1:
                    login("管理员");
                    break;
                case 2:
                    System.out.println("经理功能正在开发中，敬请期待！");
                    break;
                case 3:
                    System.out.println("前台功能正在开发中，敬请期待！");
                    break;
                case 4:
                    System.out.println("感谢使用，再见！");
                    return;
                default:
                    System.out.println("无效选项，请重新选择");
            }
        }
    }

    private void login(String userType) {
        System.out.println("\n===== " + userType + "登录 =====");
        System.out.print("请输入用户名：");
        String username = scanner.nextLine();
        System.out.print("请输入密码：");
        String password = scanner.nextLine();

        User user = userManager.login(username, password, userType);
        if (user == null) {
            System.out.println("用户名或密码错误");
            return;
        }

        if (user.isFirstLogin()) {
            System.out.println("\n===== 首次登录必须修改密码 =====");
            System.out.print("请输入新密码：");
            String newPwd = scanner.nextLine();
            System.out.print("请再次输入新密码：");
            String confirmPwd = scanner.nextLine();

            if (!newPwd.equals(confirmPwd)) {
                System.out.println("两次输入不一致，登录失败");
                return;
            }

            if (userManager.changePassword(username, password, newPwd)) {
                System.out.println("密码修改成功，登录中...");
            } else {
                System.out.println("密码修改失败，登录失败");
                return;
            }
        }

        System.out.println("登录成功，欢迎回来，" + username + "！");
        LogManager.log("登录系统", username);

        // 仅实现管理员界面，其他角色提示功能开发中
        if (userType.equals("管理员")) {
            new AdminUI(user).showMenu();
        } else {
            System.out.println(userType + "功能正在开发中，即将推出！");
        }
    }

    public static void main(String[] args) {
        new LoginUI().start();
    }
}